extern "C" {

int OpenComm(const char* Com,int Baudrate, int Parity, int StopBits, int DataBits);
// Function description��
// 	open the serial port��parameter refers to file kmy  350.ini  
// input��
//         NULL
// output��
//         NULL
// return��
// 	0��				OK
// 	1��				ERROR
int ResetSelfCheck();
// Function description��
// 	self checking on procedure retting (without damange on encryption key block);
// input��
// 	NULL
// output��
// 	NULL
// return��
// 	0��				OK
// 	1��				ERROR
int ResetAndSetPin();
// Function description��
// 	self checking and set the all the master keys to 8
// input��
// 	NULL
// output��
// 	NULL
// return��
// 	0��				OK
// 	1��				ERROR
int GetDeviceNo(char *cpNoBuf);
// Function description��
// 	get Serial No
// input��
// 	NULL
// output��
// 	cpNoBuf			��Serial No
// return��
// 	0��				OK
// 	1��				ERROR
int GetVer(char *cpRevBuf);
// Function description��
// 	get Serial No
// input��
// 	NULL
// output��
// 	cpRevBuf		��Serial No
// return��
// 	0��				OK
// 	1��				ERROR
int SetEncryptMode(int iMode);
// Function description��
// 	way of encryption
// input��
// 	iMode			
// 				0��	DES encryption  
// 				1��	3DES encryption;
// output��
// 	NULL
// return��
// 	0��				OK
// 	1��				ERROR
int SetPinLen(int iLen);
// Function description��
// 	set the length of password input
// input��
// 	iLen			:range1����6
// output��
// 	NULL
// return��
// 	0��				OK
// 	1��				ERROR	
int LoadMasterKey(int MKeyNo, char *MKeyAsc);
// Function description��
// 	download master key
// input��
// 	MKeyNo			��master key range 0��15
// 	MKeyAsc			��master key
// output��
// 	NULL
// return��
// 	0��				OK
// 	1��				ERROR
int LoadWorkKey(int MKeyNo, int WKeyNo, char *WKeyAsc);
// Function description��
// 	download working key
// input��
// 	MKeyNo			��master key range 0��15
// 	WKeyNo			��working key range 0��15
// 	WKeyAsc			��working key
// output��
// 	NULL
// return��
// 	0��				OK
// 	1��				ERROR	
int ActivWorkPin(int MKeyNo, int WKeyNo);
// Function description��
// 	activate working key
// input��
// 	MKeyNo			��master key range0��15
// 	WKeyNo			��working key range0��15
// output��
// 	NULL
// return��
// 	0��				OK
// 	1��				ERROR	
int PinEnableMode(char *pchCardNo);
// Function description��
// 	PINBLOCK operation
// input��
// 	pchCardNo		��complete card number
// output��
// 	NULL
// return��
// 	0��				OK
// 	1��				ERROR
int CheckPressedBuf(char *pszBuff, long lTimeout);
// Function description��
// 	receive one bite data��scan keyboard buttons��
// input��
// 	lTimeout		��scan timeout
// output��
// 	pszBuff			��key value
// 		0x2A		��*
// 		0x0D		��carriage return
// 		0x08		��clear
// 		0x1B		��exit
// 		other		��
// return��
// 	0��				OK
// 	1��				ERROR
int EnableGetdata(void);
int PinReadPin(char *chPin);
// Function description��
// 	get the ciphertext
// input��
// 	NULL
// output��
// 	chPin			��ciphertext
// return��
// 	0��				OK
// 	1��				ERROR	
int Encrypt(char *DataInput, char *DataOutput);
// Function description��
// 	data encryption
// input��
// 	DataInput		��data requiring encryption
// output��
// 	DataOutput		��DES or 3DES ciphertext after encryption
// return��
// 	0��				OK
// 	1��				ERROR	
int UnEncrypt(char *DataInput, char *DataOutput);
// Function description��
// 	data decryption
// input��
// 	DataInput		��data requiring decryption
// output��
// 	DataOutput		��DES �� 3DES plaintext after decryption
// return��
// 	0��				OK
// 	1��				ERROR	
int CalcMacData(char *DataInput, char *DataOutput);	
// Function decription��
// 	MAC operation
// input��
// 	DataInput		��data requiring MAC operation
// output��
// 	DataOutput		��data after MAC operation
// return��
// 	0��				OK
// 	1��				ERROR	
int CloseComm();
// Function description��
// 	close serial port
// input��
// 	NULL
// output��
// 	NULL
// return��
// 	0��				OK
// 	1��				ERROR
// 	211,133.11-8,583.6
void geterror(char *info);
// Function description��
// 	collect errors6516.96
// input��
// 	NULL
// output��
// 	info		��errors
int SetSamSlot(int iSlot);
// Function description��set the IC card slot number that requires current operation 
// input��
// 	iSlot  card slot number
// output��
// 	return value, non-zero indicates error
int SamPowerOn(char *atm,int * iLen);
// Function description��power on ic card in card slot, SetSamSlot must be executed before this command
// input��
// 	NULL
// output��
// 	return value, non-zero indicates error
// 	atm		returned art information after card is powered on
// 	iLen	atr length
int SamApdu(char *apdu,char *rsp,int * iLen);
// Function description��execute apdu command to ic card in card slot, SamPowerOn must be executed before this command,
// input��
// 	apdu   ,apdu command
// output��
// 	return value, non-zero indicates error
// 	rsp		returned information after apdu command  is executed on the card
// 	iLen	length
int GetData(void);
// FunCtion: Get Data
// Intput Param:
// 	NULL
// Output Param:
// 	if return value is not 0,it's Error
int KeyboardClose(void);
// FunCtion: Close keyBoard input.
// Imput Param:
// 	NULL
// Output Param:
// 	if return value is not 0,it's Error
}